package iface.aplicativo.apresentacao.converter;

import iface.aplicativo.integracao.dao.EntradaVeiculoDAO;
import iface.aplicativo.integracao.dao.VeiculoDAO;
import iface.aplicativo.negocio.entidade.EntradaVeiculo;
import iface.aplicativo.negocio.entidade.Veiculo;
import iface.arquitetura.comum.string.UtilString;

import java.util.Collection;

import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;

import org.springframework.web.jsf.FacesContextUtils;

@FacesConverter(value = "veiculoConverter")
public class VeiculoConverter implements Converter {

	public Object getAsObject(FacesContext fc, UIComponent uic, String string) {
		VeiculoDAO veiculoDAO = (VeiculoDAO) FacesContextUtils
				.getWebApplicationContext(fc).getBean("veiculoDAO");
		EntradaVeiculoDAO entradaVeiculoDAO = (EntradaVeiculoDAO) FacesContextUtils
				.getWebApplicationContext(fc).getBean("entradaVeiculoDAO");

		Veiculo veiculo = null;
		if (!UtilString.isVazio(string)) {
			try {
				veiculo = veiculoDAO.obter(Long.valueOf(string));
				Collection<EntradaVeiculo> entradas = entradaVeiculoDAO
						.consultarEntradaPorVeiculo(veiculo);
				if (entradas != null && !entradas.isEmpty()) {

					EntradaVeiculo entrada = entradas.iterator().next();
					veiculo.setValorCompra(entrada.getVlrCompraVeiculo());
					veiculo.setValorVenda(entrada.getVlrVendaVeiculo());
				}
			} catch (NumberFormatException e) {
				return null;
			}
		}

		return veiculo;
	}

	public String getAsString(FacesContext fc, UIComponent uic, Object o) {
		Veiculo veiculo = new Veiculo();
		veiculo = (Veiculo) o;
		if (veiculo != null && veiculo.getIdVeiculo() != null) {
			return veiculo.getIdVeiculo().toString();
		} else {
			return null;
		}
	}

}